package saves.items;

import game.LScript;
import game.TextManager;
import saves.EntidadeNave;

public class Condicao {

    private int codStatus, codOperador;
    private float valor;

    public Condicao(int codAtributo, int codOperador, float valor) {
        super();
        this.codStatus = codAtributo;
        this.codOperador = codOperador;
        this.valor = valor;
    }

    public boolean preenche(EntidadeNave n) {
        float v = n.getStatus(codStatus);
        switch (codOperador) {
            case 0:
                return v == valor;
            case 1:
                return v > valor;
            case 2:
                return v >= valor;
            case 3:
                return v < valor;
            case 4:
                return v <= valor;
            case 5:
                return v != valor;
            default:
                return false;
        }
    }
    
    public String getOperatorString() {
        switch (codOperador) {
            case 0:
                return "=";
            case 1:
                return ">";
            case 2:
                return ">=";
            case 3:
                return "<";
            case 4:
                return "<=";
            case 5:
                return "!=";
            default:
                return null;
        }
    }
    
    @Override
    public String toString() {
        return TextManager.t().ATTRIBUTES[codStatus][0] + " " + getOperatorString() + " " + LScript.format(valor);
    }
    
    @Override
    public boolean equals(Object o) {
        if (o instanceof Condicao) {
            Condicao c = (Condicao) o;
            return c.codStatus == codStatus && c.codOperador == codOperador && c.valor == valor;
        }
        return false;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 43 * hash + this.codStatus;
        hash = 43 * hash + this.codOperador;
        hash = 43 * hash + Float.floatToIntBits(this.valor);
        return hash;
    }
}
